package com.qf.listener;

import com.qf.pojo.User;
import org.apache.rocketmq.spring.annotation.ConsumeMode;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
 * 演示顺序消息的消费,要设置当前消费者的消费模式为 ConsumeMode.ORDERLY，而不是并发消费
 *
 *   当主题的队列因为某些原因，导致某个或者某些队列出现异常退出，导致最终主题队列总数发生变化。
 *        保障可用性：将异常的队列排除，最终消息发送到队列后，可能跟之前发送的队列不一致，此时消息顺序是无法保障的，可用性是可以保障的
 *        （**）保障消息绝对顺序：异常队列不排除，队列总数不变，发送消息时，顺序性可以绝对保障的。如果消息正好是在异常队列上，会导致消息发送失败
 *
 */
//@Component
//@RocketMQMessageListener(consumerGroup="consumer-group1",topic="test2",consumeMode = ConsumeMode.ORDERLY)
public class RocketMQListener4 implements RocketMQListener<User> {
    @Override
    public void onMessage(User message) {
        try {
            System.out.println("消费者4：" + message);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
